package main

import (
	"fmt"
	"gitee.com/changzer/zink/zink/ziface"
	"gitee.com/changzer/zink/zink/znet"
)

// ping test 自定义路由
type PingRouter struct {
	znet.BaseRouter
}

// Test PreHandle
// 在处理conn业务之前的钩子方法Hook
func (p *PingRouter) PreHandle(request ziface.IRequest) {
	fmt.Printf("Call Router PreHandle...\n")
	_, err := request.GetConnection().GetTCPConnection().Write([]byte("before ping...\n"))
	if err != nil {
		fmt.Println(err)
	}
}

// 在处理conn业务的主方法Hook
func (p *PingRouter) Handle(request ziface.IRequest) {
	fmt.Printf("Call Router Handle...\n")
	_, err := request.GetConnection().GetTCPConnection().Write([]byte("ping ping...\n"))
	if err != nil {
		fmt.Println(err)
	}
}

// 在处理conn业务之后的钩子方法Hook
func (p *PingRouter) PostHandle(request ziface.IRequest) {
	fmt.Printf("Call Router PostHandle...\n")
	_, err := request.GetConnection().GetTCPConnection().Write([]byte("after ping...\n"))
	if err != nil {
		fmt.Println(err)
	}
}

func main() {
	// 1. 初始化
	s := znet.NewServer("[zink V0.3]")
	s.AddRouter(&PingRouter{})
	// 2. 启动服务
	s.Serve()
	// 3. 注册路由

	// 4. 启动服务
}
